package com.example.spindrift.dao;

import com.example.spindrift.models.SysSong;
import com.example.spindrift.models.SysSongList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Mapper
public interface SysSongListMapper {
    /**
     * 获取所有歌单信息
     * @return
     */
    List<SysSongList> getAllSongList();
    /**
     * 根据歌单名称搜索个歌单信息
     * @param keyword 搜索关键字
     * @return
     */
    List<SysSongList> searchSongList(@Param("keyword") String keyword,@Param("states") String states);

    /**
     * 根据用户ID查找歌曲信息
     * @param user_id 用户ID(歌单所有者ID)
     * @return
     */
    List<SysSongList> getSongListByUser(Integer user_id);

    /**
     * 根据歌单类别获取歌单信息
     * @param type 歌单类型（0：私有，1：公有）
     * @return
     */
    List<SysSongList> getSongListByType(String type);

    /**
     * 根据歌单ID获取歌曲信息列表
     * @param song_list_id 歌单ID
     * @return
     */
    List<SysSong> getSongBySongList(Integer song_list_id);

    /**
     * 根据歌曲名称，在指定歌单中查询歌曲信息
     * @param songListId 歌单ID
     * @param keyword 歌曲名称关键字
     * @return
     */
    List<SysSong> searchSongBySongList(@Param("songListId") Integer songListId,@Param("keyword") String keyword);

    /**
     * 获取指定状态的歌单信息
     * @param states 状态列表
     * @return
     */
    List<SysSongList> getSongListByState(String states);

    /**
     * 根据歌单ID获取歌单信息
     * @param songListId 歌单ID
     * @return
     */
    SysSongList getSongListById(Integer songListId);

    /**
     * 添加一条歌单信息
     * @param songList 歌单信息
     * @return
     */
    Integer insertSongList(SysSongList songList);

    /**
     * 修改一条歌单信息记录
     * @param songList 歌单信息
     * @return
     */
    Integer updateSongList(SysSongList songList);

    /**
     * 根据歌单ID移除一条歌单记录
     * @param song_list_id 歌单ID
     * @return
     */
    Integer deleteSongList(Integer song_list_id);
}
